/*//////////////////////////////////////////////////////////////////////////////
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 2006-2007 Intel Corporation. All Rights Reserved.
//
*/

#include "umc_defs.h"
#if defined (UMC_ENABLE_MP3_INT_AUDIO_DECODER)

#include "mp3dec_own.h"

Ipp32s mp3idec_VLCShifts[] = {
    0, 1, 2, 2, 0, 2, 2, 3, 3, 3, 3, 3, 3, 4, 0, 4,
    4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1
};

Ipp32s mp3idec_VLCOffsets[] = {
    0, 128, 128, 128,   0, 128, 128, 128,
  128, 128, 128, 128, 128, 128,   0, 128,
  128, 128, 128, 128, 128, 128, 128, 128,
  128, 128, 128, 128, 128, 128, 128, 128,
    2,   2
};

Ipp32s mp3idec_VLCTableSizes[] = {
  0, 4, 9, 9, 0, 16, 16, 36, 36, 36, 64, 64, 64,256, 0, 256,
  256, 256, 256, 256, 256, 256, 256, 256,
  256, 256, 256, 256, 256, 256, 256, 256,
  16, 16
};

Ipp32s mp3idec_VLCNumSubTables[] = {
    0, 1, 2, 2, 0, 4, 3, 3, 4, 3, 3, 4, 4, 8, 0, 4, 5,
    5, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1
};

static Ipp32s  mp3VLCSubTablesSizes1[] = {3};
static Ipp32s  mp3VLCSubTablesSizes2[] = {5, 1};
static Ipp32s  mp3VLCSubTablesSizes3[] = {4, 2};
static Ipp32s  mp3VLCSubTablesSizes5[] = {4, 1,1,2};
static Ipp32s  mp3VLCSubTablesSizes6[] = {4, 2, 1};
static Ipp32s  mp3VLCSubTablesSizes7[] = {5, 2, 3};
static Ipp32s  mp3VLCSubTablesSizes8[] = {4, 2, 4, 1};
static Ipp32s  mp3VLCSubTablesSizes9[] = {5, 2, 2};
static Ipp32s mp3VLCSubTablesSizes10[] = {5, 3,3};
static Ipp32s mp3VLCSubTablesSizes11[] = {4, 2,4,1};
static Ipp32s mp3VLCSubTablesSizes12[] = {4, 3,2,1};
static Ipp32s mp3VLCSubTablesSizes13[] = {6,4,2,2,2,1,1,1};
static Ipp32s mp3VLCSubTablesSizes15[] = {7,3,2,1};
static Ipp32s mp3VLCSubTablesSizes16[] = {6,5,3,2,1};
static Ipp32s mp3VLCSubTablesSizes24[] = {5, 5, 2};
static Ipp32s mp3VLCSubTablesSizes32[] = {4, 2};
static Ipp32s mp3VLCSubTablesSizes33[] = {4};

/* bit_max = 3 */
/* shift = 1, size = 4 */
static IppsVLCTable_32s huf_tab1[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000001,  3},
  {    2, 0x00000001,  2},  {    3, 0x00000000,  3},

};

/* bit_max = 6 */
/* shift = 2, size = 9 */
static IppsVLCTable_32s huf_tab2[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000002,  3},
  {    2, 0x00000001,  6},  {    4, 0x00000003,  3},
  {    5, 0x00000001,  3},  {    6, 0x00000001,  5},
  {    8, 0x00000003,  5},  {    9, 0x00000002,  5},
  {   10, 0x00000000,  6},
};

/* bit_max = 6 */
/* shift = 2, size = 9 */
static IppsVLCTable_32s huf_tab3[] = {
  {    0, 0x00000003,  2},  {    1, 0x00000002,  2},
  {    2, 0x00000001,  6},  {    4, 0x00000001,  3},
  {    5, 0x00000001,  2},  {    6, 0x00000001,  5},
  {    8, 0x00000003,  5},  {    9, 0x00000002,  5},
  {   10, 0x00000000,  6},
};

/* bit_max = 8 */
/* shift = 2, size = 16 */
static IppsVLCTable_32s huf_tab5[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000002,  3},
  {    2, 0x00000006,  6},  {    3, 0x00000005,  7},
  {    4, 0x00000003,  3},  {    5, 0x00000001,  3},
  {    6, 0x00000004,  6},  {    7, 0x00000004,  7},
  {    8, 0x00000007,  6},  {    9, 0x00000005,  6},
  {   10, 0x00000007,  7},  {   11, 0x00000001,  8},
  {   12, 0x00000006,  7},  {   13, 0x00000001,  6},
  {   14, 0x00000001,  7},  {   15, 0x00000000,  8},

};

/* bit_max = 7 */
/* shift = 2, size = 16 */
static IppsVLCTable_32s huf_tab6[] = {
  {    0, 0x00000007,  3},  {    1, 0x00000003,  3},
  {    2, 0x00000005,  5},  {    3, 0x00000001,  7},
  {    4, 0x00000006,  3},  {    5, 0x00000002,  2},
  {    6, 0x00000003,  4},  {    7, 0x00000002,  5},
  {    8, 0x00000005,  4},  {    9, 0x00000004,  4},
  {   10, 0x00000004,  5},  {   11, 0x00000001,  6},
  {   12, 0x00000003,  6},  {   13, 0x00000003,  5},
  {   14, 0x00000002,  6},  {   15, 0x00000000,  7},

};

/* bit_max = 10 */
/* shift = 3, size = 36 */
static IppsVLCTable_32s huf_tab7[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000002,  3},
  {    2, 0x0000000a,  6},  {    3, 0x00000013,  8},
  {    4, 0x00000010,  8},  {    5, 0x0000000a,  9},
  {    8, 0x00000003,  3},  {    9, 0x00000003,  4},
  {   10, 0x00000007,  6},  {   11, 0x0000000a,  7},
  {   12, 0x00000005,  7},  {   13, 0x00000003,  8},
  {   16, 0x0000000b,  6},  {   17, 0x00000004,  5},
  {   18, 0x0000000d,  7},  {   19, 0x00000011,  8},
  {   20, 0x00000008,  8},  {   21, 0x00000004,  9},
  {   24, 0x0000000c,  7},  {   25, 0x0000000b,  7},
  {   26, 0x00000012,  8},  {   27, 0x0000000f,  9},
  {   28, 0x0000000b,  9},  {   29, 0x00000002,  9},
  {   32, 0x00000007,  7},  {   33, 0x00000006,  7},
  {   34, 0x00000009,  8},  {   35, 0x0000000e,  9},
  {   36, 0x00000003,  9},  {   37, 0x00000001, 10},
  {   40, 0x00000006,  8},  {   41, 0x00000004,  8},
  {   42, 0x00000005,  9},  {   43, 0x00000003, 10},
  {   44, 0x00000002, 10},  {   45, 0x00000000, 10},

};

/* bit_max = 11 */
/* shift = 3, size = 36 */
static IppsVLCTable_32s huf_tab8[] = {
  {    0, 0x00000003,  2},  {    1, 0x00000004,  3},
  {    2, 0x00000006,  6},  {    3, 0x00000012,  8},
  {    4, 0x0000000c,  8},  {    5, 0x00000005,  9},
  {    8, 0x00000005,  3},  {    9, 0x00000001,  2},
  {   10, 0x00000002,  4},  {   11, 0x00000010,  8},
  {   12, 0x00000009,  8},  {   13, 0x00000003,  8},
  {   16, 0x00000007,  6},  {   17, 0x00000003,  4},
  {   18, 0x00000005,  6},  {   19, 0x0000000e,  8},
  {   20, 0x00000007,  8},  {   21, 0x00000003,  9},
  {   24, 0x00000013,  8},  {   25, 0x00000011,  8},
  {   26, 0x0000000f,  8},  {   27, 0x0000000d,  9},
  {   28, 0x0000000a,  9},  {   29, 0x00000004, 10},
  {   32, 0x0000000d,  8},  {   33, 0x00000005,  7},
  {   34, 0x00000008,  8},  {   35, 0x0000000b,  9},
  {   36, 0x00000005, 10},  {   37, 0x00000001, 10},
  {   40, 0x0000000c,  9},  {   41, 0x00000004,  8},
  {   42, 0x00000004,  9},  {   43, 0x00000001,  9},
  {   44, 0x00000001, 11},  {   45, 0x00000000, 11},

};

/* bit_max = 9 */
/* shift = 3, size = 36 */
static IppsVLCTable_32s huf_tab9[] = {
  {    0, 0x00000007,  3},  {    1, 0x00000005,  3},
  {    2, 0x00000009,  5},  {    3, 0x0000000e,  6},
  {    4, 0x0000000f,  8},  {    5, 0x00000007,  9},
  {    8, 0x00000006,  3},  {    9, 0x00000004,  3},
  {   10, 0x00000005,  4},  {   11, 0x00000005,  5},
  {   12, 0x00000006,  6},  {   13, 0x00000007,  8},
  {   16, 0x00000007,  4},  {   17, 0x00000006,  4},
  {   18, 0x00000008,  5},  {   19, 0x00000008,  6},
  {   20, 0x00000008,  7},  {   21, 0x00000005,  8},
  {   24, 0x0000000f,  6},  {   25, 0x00000006,  5},
  {   26, 0x00000009,  6},  {   27, 0x0000000a,  7},
  {   28, 0x00000005,  7},  {   29, 0x00000001,  8},
  {   32, 0x0000000b,  7},  {   33, 0x00000007,  6},
  {   34, 0x00000009,  7},  {   35, 0x00000006,  7},
  {   36, 0x00000004,  8},  {   37, 0x00000001,  9},
  {   40, 0x0000000e,  8},  {   41, 0x00000004,  7},
  {   42, 0x00000006,  8},  {   43, 0x00000002,  8},
  {   44, 0x00000006,  9},  {   45, 0x00000000,  9},

};

/* bit_max = 11 */
/* shift = 3, size = 64 */
static IppsVLCTable_32s huf_tab10[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000002,  3},
  {    2, 0x0000000a,  6},  {    3, 0x00000017,  8},
  {    4, 0x00000023,  9},  {    5, 0x0000001e,  9},
  {    6, 0x0000000c,  9},  {    7, 0x00000011, 10},
  {    8, 0x00000003,  3},  {    9, 0x00000003,  4},
  {   10, 0x00000008,  6},  {   11, 0x0000000c,  7},
  {   12, 0x00000012,  8},  {   13, 0x00000015,  9},
  {   14, 0x0000000c,  8},  {   15, 0x00000007,  8},
  {   16, 0x0000000b,  6},  {   17, 0x00000009,  6},
  {   18, 0x0000000f,  7},  {   19, 0x00000015,  8},
  {   20, 0x00000020,  9},  {   21, 0x00000028, 10},
  {   22, 0x00000013,  9},  {   23, 0x00000006,  9},
  {   24, 0x0000000e,  7},  {   25, 0x0000000d,  7},
  {   26, 0x00000016,  8},  {   27, 0x00000022,  9},
  {   28, 0x0000002e, 10},  {   29, 0x00000017, 10},
  {   30, 0x00000012,  9},  {   31, 0x00000007, 10},
  {   32, 0x00000014,  8},  {   33, 0x00000013,  8},
  {   34, 0x00000021,  9},  {   35, 0x0000002f, 10},
  {   36, 0x0000001b, 10},  {   37, 0x00000016, 10},
  {   38, 0x00000009, 10},  {   39, 0x00000003, 10},
  {   40, 0x0000001f,  9},  {   41, 0x00000016,  9},
  {   42, 0x00000029, 10},  {   43, 0x0000001a, 10},
  {   44, 0x00000015, 11},  {   45, 0x00000014, 11},
  {   46, 0x00000005, 10},  {   47, 0x00000003, 11},
  {   48, 0x0000000e,  8},  {   49, 0x0000000d,  8},
  {   50, 0x0000000a,  9},  {   51, 0x0000000b, 10},
  {   52, 0x00000010, 10},  {   53, 0x00000006, 10},
  {   54, 0x00000005, 11},  {   55, 0x00000001, 11},
  {   56, 0x00000009,  9},  {   57, 0x00000008,  8},
  {   58, 0x00000007,  9},  {   59, 0x00000008, 10},
  {   60, 0x00000004, 10},  {   61, 0x00000004, 11},
  {   62, 0x00000002, 11},  {   63, 0x00000000, 11},

};

/* bit_max = 11 */
/* shift = 3, size = 64 */
static IppsVLCTable_32s huf_tab11[] = {
  {    0, 0x00000003,  2},  {    1, 0x00000004,  3},
  {    2, 0x0000000a,  5},  {    3, 0x00000018,  7},
  {    4, 0x00000022,  8},  {    5, 0x00000021,  9},
  {    6, 0x00000015,  8},  {    7, 0x0000000f,  9},
  {    8, 0x00000005,  3},  {    9, 0x00000003,  3},
  {   10, 0x00000004,  4},  {   11, 0x0000000a,  6},
  {   12, 0x00000020,  8},  {   13, 0x00000011,  8},
  {   14, 0x0000000b,  7},  {   15, 0x0000000a,  8},
  {   16, 0x0000000b,  5},  {   17, 0x00000007,  5},
  {   18, 0x0000000d,  6},  {   19, 0x00000012,  7},
  {   20, 0x0000001e,  8},  {   21, 0x0000001f,  9},
  {   22, 0x00000014,  8},  {   23, 0x00000005,  8},
  {   24, 0x00000019,  7},  {   25, 0x0000000b,  6},
  {   26, 0x00000013,  7},  {   27, 0x0000003b,  9},
  {   28, 0x0000001b,  8},  {   29, 0x00000012, 10},
  {   30, 0x0000000c,  8},  {   31, 0x00000005,  9},
  {   32, 0x00000023,  8},  {   33, 0x00000021,  8},
  {   34, 0x0000001f,  8},  {   35, 0x0000003a,  9},
  {   36, 0x0000001e,  9},  {   37, 0x00000010, 10},
  {   38, 0x00000007,  9},  {   39, 0x00000005, 10},
  {   40, 0x0000001c,  8},  {   41, 0x0000001a,  8},
  {   42, 0x00000020,  9},  {   43, 0x00000013, 10},
  {   44, 0x00000011, 10},  {   45, 0x0000000f, 11},
  {   46, 0x00000008, 10},  {   47, 0x0000000e, 11},
  {   48, 0x0000000e,  8},  {   49, 0x0000000c,  7},
  {   50, 0x00000009,  7},  {   51, 0x0000000d,  8},
  {   52, 0x0000000e,  9},  {   53, 0x00000009, 10},
  {   54, 0x00000004, 10},  {   55, 0x00000001, 10},
  {   56, 0x0000000b,  8},  {   57, 0x00000004,  7},
  {   58, 0x00000006,  8},  {   59, 0x00000006,  9},
  {   60, 0x00000006, 10},  {   61, 0x00000003, 10},
  {   62, 0x00000002, 10},  {   63, 0x00000000, 10},

};

/* bit_max = 10 */
/* shift = 3, size = 64 */
static IppsVLCTable_32s huf_tab12[] = {
  {    0, 0x00000009,  4},  {    1, 0x00000006,  3},
  {    2, 0x00000010,  5},  {    3, 0x00000021,  7},
  {    4, 0x00000029,  8},  {    5, 0x00000027,  9},
  {    6, 0x00000026,  9},  {    7, 0x0000001a,  9},
  {    8, 0x00000007,  3},  {    9, 0x00000005,  3},
  {   10, 0x00000006,  4},  {   11, 0x00000009,  5},
  {   12, 0x00000017,  7},  {   13, 0x00000010,  7},
  {   14, 0x0000001a,  8},  {   15, 0x0000000b,  8},
  {   16, 0x00000011,  5},  {   17, 0x00000007,  4},
  {   18, 0x0000000b,  5},  {   19, 0x0000000e,  6},
  {   20, 0x00000015,  7},  {   21, 0x0000001e,  8},
  {   22, 0x0000000a,  7},  {   23, 0x00000007,  8},
  {   24, 0x00000011,  6},  {   25, 0x0000000a,  5},
  {   26, 0x0000000f,  6},  {   27, 0x0000000c,  6},
  {   28, 0x00000012,  7},  {   29, 0x0000001c,  8},
  {   30, 0x0000000e,  8},  {   31, 0x00000005,  8},
  {   32, 0x00000020,  7},  {   33, 0x0000000d,  6},
  {   34, 0x00000016,  7},  {   35, 0x00000013,  7},
  {   36, 0x00000012,  8},  {   37, 0x00000010,  8},
  {   38, 0x00000009,  8},  {   39, 0x00000005,  9},
  {   40, 0x00000028,  8},  {   41, 0x00000011,  7},
  {   42, 0x0000001f,  8},  {   43, 0x0000001d,  8},
  {   44, 0x00000011,  8},  {   45, 0x0000000d,  9},
  {   46, 0x00000004,  8},  {   47, 0x00000002,  9},
  {   48, 0x0000001b,  8},  {   49, 0x0000000c,  7},
  {   50, 0x0000000b,  7},  {   51, 0x0000000f,  8},
  {   52, 0x0000000a,  8},  {   53, 0x00000007,  9},
  {   54, 0x00000004,  9},  {   55, 0x00000001, 10},
  {   56, 0x0000001b,  9},  {   57, 0x0000000c,  8},
  {   58, 0x00000008,  8},  {   59, 0x0000000c,  9},
  {   60, 0x00000006,  9},  {   61, 0x00000003,  9},
  {   62, 0x00000001,  9},  {   63, 0x00000000, 10},

};

/* bit_max = 19 */
/* shift = 4, size = 256 */
static IppsVLCTable_32s huf_tab13[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000005,  4},
  {    2, 0x0000000e,  6},  {    3, 0x00000015,  7},
  {    4, 0x00000022,  8},  {    5, 0x00000033,  9},
  {    6, 0x0000002e,  9},  {    7, 0x00000047, 10},
  {    8, 0x0000002a,  9},  {    9, 0x00000034, 10},
  {   10, 0x00000044, 11},  {   11, 0x00000034, 11},
  {   12, 0x00000043, 12},  {   13, 0x0000002c, 12},
  {   14, 0x0000002b, 13},  {   15, 0x00000013, 13},
  {   16, 0x00000003,  3},  {   17, 0x00000004,  4},
  {   18, 0x0000000c,  6},  {   19, 0x00000013,  7},
  {   20, 0x0000001f,  8},  {   21, 0x0000001a,  8},
  {   22, 0x0000002c,  9},  {   23, 0x00000021,  9},
  {   24, 0x0000001f,  9},  {   25, 0x00000018,  9},
  {   26, 0x00000020, 10},  {   27, 0x00000018, 10},
  {   28, 0x0000001f, 11},  {   29, 0x00000023, 12},
  {   30, 0x00000016, 12},  {   31, 0x0000000e, 12},
  {   32, 0x0000000f,  6},  {   33, 0x0000000d,  6},
  {   34, 0x00000017,  7},  {   35, 0x00000024,  8},
  {   36, 0x0000003b,  9},  {   37, 0x00000031,  9},
  {   38, 0x0000004d, 10},  {   39, 0x00000041, 10},
  {   40, 0x0000001d,  9},  {   41, 0x00000028, 10},
  {   42, 0x0000001e, 10},  {   43, 0x00000028, 11},
  {   44, 0x0000001b, 11},  {   45, 0x00000021, 12},
  {   46, 0x0000002a, 13},  {   47, 0x00000010, 13},
  {   48, 0x00000016,  7},  {   49, 0x00000014,  7},
  {   50, 0x00000025,  8},  {   51, 0x0000003d,  9},
  {   52, 0x00000038,  9},  {   53, 0x0000004f, 10},
  {   54, 0x00000049, 10},  {   55, 0x00000040, 10},
  {   56, 0x0000002b, 10},  {   57, 0x0000004c, 11},
  {   58, 0x00000038, 11},  {   59, 0x00000025, 11},
  {   60, 0x0000001a, 11},  {   61, 0x0000001f, 12},
  {   62, 0x00000019, 13},  {   63, 0x0000000e, 13},
  {   64, 0x00000023,  8},  {   65, 0x00000010,  7},
  {   66, 0x0000003c,  9},  {   67, 0x00000039,  9},
  {   68, 0x00000061, 10},  {   69, 0x0000004b, 10},
  {   70, 0x00000072, 11},  {   71, 0x0000005b, 11},
  {   72, 0x00000036, 10},  {   73, 0x00000049, 11},
  {   74, 0x00000037, 11},  {   75, 0x00000029, 12},
  {   76, 0x00000030, 12},  {   77, 0x00000035, 13},
  {   78, 0x00000017, 13},  {   79, 0x00000018, 14},
  {   80, 0x0000003a,  9},  {   81, 0x0000001b,  8},
  {   82, 0x00000032,  9},  {   83, 0x00000060, 10},
  {   84, 0x0000004c, 10},  {   85, 0x00000046, 10},
  {   86, 0x0000005d, 11},  {   87, 0x00000054, 11},
  {   88, 0x0000004d, 11},  {   89, 0x0000003a, 11},
  {   90, 0x0000004f, 12},  {   91, 0x0000001d, 11},
  {   92, 0x0000004a, 13},  {   93, 0x00000031, 13},
  {   94, 0x00000029, 14},  {   95, 0x00000011, 14},
  {   96, 0x0000002f,  9},  {   97, 0x0000002d,  9},
  {   98, 0x0000004e, 10},  {   99, 0x0000004a, 10},
  {  100, 0x00000073, 11},  {  101, 0x0000005e, 11},
  {  102, 0x0000005a, 11},  {  103, 0x0000004f, 11},
  {  104, 0x00000045, 11},  {  105, 0x00000053, 12},
  {  106, 0x00000047, 12},  {  107, 0x00000032, 12},
  {  108, 0x0000003b, 13},  {  109, 0x00000026, 13},
  {  110, 0x00000024, 14},  {  111, 0x0000000f, 14},
  {  112, 0x00000048, 10},  {  113, 0x00000022,  9},
  {  114, 0x00000038, 10},  {  115, 0x0000005f, 11},
  {  116, 0x0000005c, 11},  {  117, 0x00000055, 11},
  {  118, 0x0000005b, 12},  {  119, 0x0000005a, 12},
  {  120, 0x00000056, 12},  {  121, 0x00000049, 12},
  {  122, 0x0000004d, 13},  {  123, 0x00000041, 13},
  {  124, 0x00000033, 13},  {  125, 0x0000002c, 14},
  {  126, 0x0000002b, 16},  {  127, 0x0000002a, 16},
  {  128, 0x0000002b,  9},  {  129, 0x00000014,  8},
  {  130, 0x0000001e,  9},  {  131, 0x0000002c, 10},
  {  132, 0x00000037, 10},  {  133, 0x0000004e, 11},
  {  134, 0x00000048, 11},  {  135, 0x00000057, 12},
  {  136, 0x0000004e, 12},  {  137, 0x0000003d, 12},
  {  138, 0x0000002e, 12},  {  139, 0x00000036, 13},
  {  140, 0x00000025, 13},  {  141, 0x0000001e, 14},
  {  142, 0x00000014, 15},  {  143, 0x00000010, 15},
  {  144, 0x00000035, 10},  {  145, 0x00000019,  9},
  {  146, 0x00000029, 10},  {  147, 0x00000025, 10},
  {  148, 0x0000002c, 11},  {  149, 0x0000003b, 11},
  {  150, 0x00000036, 11},  {  151, 0x00000051, 13},
  {  152, 0x00000042, 12},  {  153, 0x0000004c, 13},
  {  154, 0x00000039, 13},  {  155, 0x00000036, 14},
  {  156, 0x00000025, 14},  {  157, 0x00000012, 14},
  {  158, 0x00000027, 16},  {  159, 0x0000000b, 15},
  {  160, 0x00000023, 10},  {  161, 0x00000021, 10},
  {  162, 0x0000001f, 10},  {  163, 0x00000039, 11},
  {  164, 0x0000002a, 11},  {  165, 0x00000052, 12},
  {  166, 0x00000048, 12},  {  167, 0x00000050, 13},
  {  168, 0x0000002f, 12},  {  169, 0x0000003a, 13},
  {  170, 0x00000037, 14},  {  171, 0x00000015, 13},
  {  172, 0x00000016, 14},  {  173, 0x0000001a, 15},
  {  174, 0x00000026, 16},  {  175, 0x00000016, 17},
  {  176, 0x00000035, 11},  {  177, 0x00000019, 10},
  {  178, 0x00000017, 10},  {  179, 0x00000026, 11},
  {  180, 0x00000046, 12},  {  181, 0x0000003c, 12},
  {  182, 0x00000033, 12},  {  183, 0x00000024, 12},
  {  184, 0x00000037, 13},  {  185, 0x0000001a, 13},
  {  186, 0x00000022, 13},  {  187, 0x00000017, 14},
  {  188, 0x0000001b, 15},  {  189, 0x0000000e, 15},
  {  190, 0x00000009, 15},  {  191, 0x00000007, 16},
  {  192, 0x00000022, 11},  {  193, 0x00000020, 11},
  {  194, 0x0000001c, 11},  {  195, 0x00000027, 12},
  {  196, 0x00000031, 12},  {  197, 0x0000004b, 13},
  {  198, 0x0000001e, 12},  {  199, 0x00000034, 13},
  {  200, 0x00000030, 14},  {  201, 0x00000028, 14},
  {  202, 0x00000034, 15},  {  203, 0x0000001c, 15},
  {  204, 0x00000012, 15},  {  205, 0x00000011, 16},
  {  206, 0x00000009, 16},  {  207, 0x00000005, 16},
  {  208, 0x0000002d, 12},  {  209, 0x00000015, 11},
  {  210, 0x00000022, 12},  {  211, 0x00000040, 13},
  {  212, 0x00000038, 13},  {  213, 0x00000032, 13},
  {  214, 0x00000031, 14},  {  215, 0x0000002d, 14},
  {  216, 0x0000001f, 14},  {  217, 0x00000013, 14},
  {  218, 0x0000000c, 14},  {  219, 0x0000000f, 15},
  {  220, 0x0000000a, 16},  {  221, 0x00000007, 15},
  {  222, 0x00000006, 16},  {  223, 0x00000003, 16},
  {  224, 0x00000030, 13},  {  225, 0x00000017, 12},
  {  226, 0x00000014, 12},  {  227, 0x00000027, 13},
  {  228, 0x00000024, 13},  {  229, 0x00000023, 13},
  {  230, 0x00000035, 15},  {  231, 0x00000015, 14},
  {  232, 0x00000010, 14},  {  233, 0x00000017, 17},
  {  234, 0x0000000d, 15},  {  235, 0x0000000a, 15},
  {  236, 0x00000006, 15},  {  237, 0x00000001, 17},
  {  238, 0x00000004, 16},  {  239, 0x00000002, 16},
  {  240, 0x00000010, 12},  {  241, 0x0000000f, 12},
  {  242, 0x00000011, 13},  {  243, 0x0000001b, 14},
  {  244, 0x00000019, 14},  {  245, 0x00000014, 14},
  {  246, 0x0000001d, 15},  {  247, 0x0000000b, 14},
  {  248, 0x00000011, 15},  {  249, 0x0000000c, 15},
  {  250, 0x00000010, 16},  {  251, 0x00000008, 16},
  {  252, 0x00000001, 19},  {  253, 0x00000001, 18},
  {  254, 0x00000000, 19},  {  255, 0x00000001, 16},

};

/* bit_max = 13 */
/* shift = 4, size = 256 */
static IppsVLCTable_32s huf_tab15[] = {
  {    0, 0x00000007,  3},  {    1, 0x0000000c,  4},
  {    2, 0x00000012,  5},  {    3, 0x00000035,  7},
  {    4, 0x0000002f,  7},  {    5, 0x0000004c,  8},
  {    6, 0x0000007c,  9},  {    7, 0x0000006c,  9},
  {    8, 0x00000059,  9},  {    9, 0x0000007b, 10},
  {   10, 0x0000006c, 10},  {   11, 0x00000077, 11},
  {   12, 0x0000006b, 11},  {   13, 0x00000051, 11},
  {   14, 0x0000007a, 12},  {   15, 0x0000003f, 13},
  {   16, 0x0000000d,  4},  {   17, 0x00000005,  3},
  {   18, 0x00000010,  5},  {   19, 0x0000001b,  6},
  {   20, 0x0000002e,  7},  {   21, 0x00000024,  7},
  {   22, 0x0000003d,  8},  {   23, 0x00000033,  8},
  {   24, 0x0000002a,  8},  {   25, 0x00000046,  9},
  {   26, 0x00000034,  9},  {   27, 0x00000053, 10},
  {   28, 0x00000041, 10},  {   29, 0x00000029, 10},
  {   30, 0x0000003b, 11},  {   31, 0x00000024, 11},
  {   32, 0x00000013,  5},  {   33, 0x00000011,  5},
  {   34, 0x0000000f,  5},  {   35, 0x00000018,  6},
  {   36, 0x00000029,  7},  {   37, 0x00000022,  7},
  {   38, 0x0000003b,  8},  {   39, 0x00000030,  8},
  {   40, 0x00000028,  8},  {   41, 0x00000040,  9},
  {   42, 0x00000032,  9},  {   43, 0x0000004e, 10},
  {   44, 0x0000003e, 10},  {   45, 0x00000050, 11},
  {   46, 0x00000038, 11},  {   47, 0x00000021, 11},
  {   48, 0x0000001d,  6},  {   49, 0x0000001c,  6},
  {   50, 0x00000019,  6},  {   51, 0x0000002b,  7},
  {   52, 0x00000027,  7},  {   53, 0x0000003f,  8},
  {   54, 0x00000037,  8},  {   55, 0x0000005d,  9},
  {   56, 0x0000004c,  9},  {   57, 0x0000003b,  9},
  {   58, 0x0000005d, 10},  {   59, 0x00000048, 10},
  {   60, 0x00000036, 10},  {   61, 0x0000004b, 11},
  {   62, 0x00000032, 11},  {   63, 0x0000001d, 11},
  {   64, 0x00000034,  7},  {   65, 0x00000016,  6},
  {   66, 0x0000002a,  7},  {   67, 0x00000028,  7},
  {   68, 0x00000043,  8},  {   69, 0x00000039,  8},
  {   70, 0x0000005f,  9},  {   71, 0x0000004f,  9},
  {   72, 0x00000048,  9},  {   73, 0x00000039,  9},
  {   74, 0x00000059, 10},  {   75, 0x00000045, 10},
  {   76, 0x00000031, 10},  {   77, 0x00000042, 11},
  {   78, 0x0000002e, 11},  {   79, 0x0000001b, 11},
  {   80, 0x0000004d,  8},  {   81, 0x00000025,  7},
  {   82, 0x00000023,  7},  {   83, 0x00000042,  8},
  {   84, 0x0000003a,  8},  {   85, 0x00000034,  8},
  {   86, 0x0000005b,  9},  {   87, 0x0000004a,  9},
  {   88, 0x0000003e,  9},  {   89, 0x00000030,  9},
  {   90, 0x0000004f, 10},  {   91, 0x0000003f, 10},
  {   92, 0x0000005a, 11},  {   93, 0x0000003e, 11},
  {   94, 0x00000028, 11},  {   95, 0x00000026, 12},
  {   96, 0x0000007d,  9},  {   97, 0x00000020,  7},
  {   98, 0x0000003c,  8},  {   99, 0x00000038,  8},
  {  100, 0x00000032,  8},  {  101, 0x0000005c,  9},
  {  102, 0x0000004e,  9},  {  103, 0x00000041,  9},
  {  104, 0x00000037,  9},  {  105, 0x00000057, 10},
  {  106, 0x00000047, 10},  {  107, 0x00000033, 10},
  {  108, 0x00000049, 11},  {  109, 0x00000033, 11},
  {  110, 0x00000046, 12},  {  111, 0x0000001e, 12},
  {  112, 0x0000006d,  9},  {  113, 0x00000035,  8},
  {  114, 0x00000031,  8},  {  115, 0x0000005e,  9},
  {  116, 0x00000058,  9},  {  117, 0x0000004b,  9},
  {  118, 0x00000042,  9},  {  119, 0x0000007a, 10},
  {  120, 0x0000005b, 10},  {  121, 0x00000049, 10},
  {  122, 0x00000038, 10},  {  123, 0x0000002a, 10},
  {  124, 0x00000040, 11},  {  125, 0x0000002c, 11},
  {  126, 0x00000015, 11},  {  127, 0x00000019, 12},
  {  128, 0x0000005a,  9},  {  129, 0x0000002b,  8},
  {  130, 0x00000029,  8},  {  131, 0x0000004d,  9},
  {  132, 0x00000049,  9},  {  133, 0x0000003f,  9},
  {  134, 0x00000038,  9},  {  135, 0x0000005c, 10},
  {  136, 0x0000004d, 10},  {  137, 0x00000042, 10},
  {  138, 0x0000002f, 10},  {  139, 0x00000043, 11},
  {  140, 0x00000030, 11},  {  141, 0x00000035, 12},
  {  142, 0x00000024, 12},  {  143, 0x00000014, 12},
  {  144, 0x00000047,  9},  {  145, 0x00000022,  8},
  {  146, 0x00000043,  9},  {  147, 0x0000003c,  9},
  {  148, 0x0000003a,  9},  {  149, 0x00000031,  9},
  {  150, 0x00000058, 10},  {  151, 0x0000004c, 10},
  {  152, 0x00000043, 10},  {  153, 0x0000006a, 11},
  {  154, 0x00000047, 11},  {  155, 0x00000036, 11},
  {  156, 0x00000026, 11},  {  157, 0x00000027, 12},
  {  158, 0x00000017, 12},  {  159, 0x0000000f, 12},
  {  160, 0x0000006d, 10},  {  161, 0x00000035,  9},
  {  162, 0x00000033,  9},  {  163, 0x0000002f,  9},
  {  164, 0x0000005a, 10},  {  165, 0x00000052, 10},
  {  166, 0x0000003a, 10},  {  167, 0x00000039, 10},
  {  168, 0x00000030, 10},  {  169, 0x00000048, 11},
  {  170, 0x00000039, 11},  {  171, 0x00000029, 11},
  {  172, 0x00000017, 11},  {  173, 0x0000001b, 12},
  {  174, 0x0000003e, 13},  {  175, 0x00000009, 12},
  {  176, 0x00000056, 10},  {  177, 0x0000002a,  9},
  {  178, 0x00000028,  9},  {  179, 0x00000025,  9},
  {  180, 0x00000046, 10},  {  181, 0x00000040, 10},
  {  182, 0x00000034, 10},  {  183, 0x0000002b, 10},
  {  184, 0x00000046, 11},  {  185, 0x00000037, 11},
  {  186, 0x0000002a, 11},  {  187, 0x00000019, 11},
  {  188, 0x0000001d, 12},  {  189, 0x00000012, 12},
  {  190, 0x0000000b, 12},  {  191, 0x0000000b, 13},
  {  192, 0x00000076, 11},  {  193, 0x00000044, 10},
  {  194, 0x0000001e,  9},  {  195, 0x00000037, 10},
  {  196, 0x00000032, 10},  {  197, 0x0000002e, 10},
  {  198, 0x0000004a, 11},  {  199, 0x00000041, 11},
  {  200, 0x00000031, 11},  {  201, 0x00000027, 11},
  {  202, 0x00000018, 11},  {  203, 0x00000010, 11},
  {  204, 0x00000016, 12},  {  205, 0x0000000d, 12},
  {  206, 0x0000000e, 13},  {  207, 0x00000007, 13},
  {  208, 0x0000005b, 11},  {  209, 0x0000002c, 10},
  {  210, 0x00000027, 10},  {  211, 0x00000026, 10},
  {  212, 0x00000022, 10},  {  213, 0x0000003f, 11},
  {  214, 0x00000034, 11},  {  215, 0x0000002d, 11},
  {  216, 0x0000001f, 11},  {  217, 0x00000034, 12},
  {  218, 0x0000001c, 12},  {  219, 0x00000013, 12},
  {  220, 0x0000000e, 12},  {  221, 0x00000008, 12},
  {  222, 0x00000009, 13},  {  223, 0x00000003, 13},
  {  224, 0x0000007b, 12},  {  225, 0x0000003c, 11},
  {  226, 0x0000003a, 11},  {  227, 0x00000035, 11},
  {  228, 0x0000002f, 11},  {  229, 0x0000002b, 11},
  {  230, 0x00000020, 11},  {  231, 0x00000016, 11},
  {  232, 0x00000025, 12},  {  233, 0x00000018, 12},
  {  234, 0x00000011, 12},  {  235, 0x0000000c, 12},
  {  236, 0x0000000f, 13},  {  237, 0x0000000a, 13},
  {  238, 0x00000002, 12},  {  239, 0x00000001, 13},
  {  240, 0x00000047, 12},  {  241, 0x00000025, 11},
  {  242, 0x00000022, 11},  {  243, 0x0000001e, 11},
  {  244, 0x0000001c, 11},  {  245, 0x00000014, 11},
  {  246, 0x00000011, 11},  {  247, 0x0000001a, 12},
  {  248, 0x00000015, 12},  {  249, 0x00000010, 12},
  {  250, 0x0000000a, 12},  {  251, 0x00000006, 12},
  {  252, 0x00000008, 13},  {  253, 0x00000006, 13},
  {  254, 0x00000002, 13},  {  255, 0x00000000, 13},

};

/* bit_max = 17 */
/* shift = 4, size = 256 */
static IppsVLCTable_32s huf_tab16[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000005,  4},
  {    2, 0x0000000e,  6},  {    3, 0x0000002c,  8},
  {    4, 0x0000004a,  9},  {    5, 0x0000003f,  9},
  {    6, 0x0000006e, 10},  {    7, 0x0000005d, 10},
  {    8, 0x000000ac, 11},  {    9, 0x00000095, 11},
  {   10, 0x0000008a, 11},  {   11, 0x000000f2, 12},
  {   12, 0x000000e1, 12},  {   13, 0x000000c3, 12},
  {   14, 0x00000178, 13},  {   15, 0x00000011,  9},
  {   16, 0x00000003,  3},  {   17, 0x00000004,  4},
  {   18, 0x0000000c,  6},  {   19, 0x00000014,  7},
  {   20, 0x00000023,  8},  {   21, 0x0000003e,  9},
  {   22, 0x00000035,  9},  {   23, 0x0000002f,  9},
  {   24, 0x00000053, 10},  {   25, 0x0000004b, 10},
  {   26, 0x00000044, 10},  {   27, 0x00000077, 11},
  {   28, 0x000000c9, 12},  {   29, 0x0000006b, 11},
  {   30, 0x000000cf, 12},  {   31, 0x00000009,  8},
  {   32, 0x0000000f,  6},  {   33, 0x0000000d,  6},
  {   34, 0x00000017,  7},  {   35, 0x00000026,  8},
  {   36, 0x00000043,  9},  {   37, 0x0000003a,  9},
  {   38, 0x00000067, 10},  {   39, 0x0000005a, 10},
  {   40, 0x000000a1, 11},  {   41, 0x00000048, 10},
  {   42, 0x0000007f, 11},  {   43, 0x00000075, 11},
  {   44, 0x0000006e, 11},  {   45, 0x000000d1, 12},
  {   46, 0x000000ce, 12},  {   47, 0x00000010,  9},
  {   48, 0x0000002d,  8},  {   49, 0x00000015,  7},
  {   50, 0x00000027,  8},  {   51, 0x00000045,  9},
  {   52, 0x00000040,  9},  {   53, 0x00000072, 10},
  {   54, 0x00000063, 10},  {   55, 0x00000057, 10},
  {   56, 0x0000009e, 11},  {   57, 0x0000008c, 11},
  {   58, 0x000000fc, 12},  {   59, 0x000000d4, 12},
  {   60, 0x000000c7, 12},  {   61, 0x00000183, 13},
  {   62, 0x0000016d, 13},  {   63, 0x0000001a, 10},
  {   64, 0x0000004b,  9},  {   65, 0x00000024,  8},
  {   66, 0x00000044,  9},  {   67, 0x00000041,  9},
  {   68, 0x00000073, 10},  {   69, 0x00000065, 10},
  {   70, 0x000000b3, 11},  {   71, 0x000000a4, 11},
  {   72, 0x0000009b, 11},  {   73, 0x00000108, 12},
  {   74, 0x000000f6, 12},  {   75, 0x000000e2, 12},
  {   76, 0x0000018b, 13},  {   77, 0x0000017e, 13},
  {   78, 0x0000016a, 13},  {   79, 0x00000009,  9},
  {   80, 0x00000042,  9},  {   81, 0x0000001e,  8},
  {   82, 0x0000003b,  9},  {   83, 0x00000038,  9},
  {   84, 0x00000066, 10},  {   85, 0x000000b9, 11},
  {   86, 0x000000ad, 11},  {   87, 0x00000109, 12},
  {   88, 0x0000008e, 11},  {   89, 0x000000fd, 12},
  {   90, 0x000000e8, 12},  {   91, 0x00000190, 13},
  {   92, 0x00000184, 13},  {   93, 0x0000017a, 13},
  {   94, 0x000001bd, 14},  {   95, 0x00000010, 10},
  {   96, 0x0000006f, 10},  {   97, 0x00000036,  9},
  {   98, 0x00000034,  9},  {   99, 0x00000064, 10},
  {  100, 0x000000b8, 11},  {  101, 0x000000b2, 11},
  {  102, 0x000000a0, 11},  {  103, 0x00000085, 11},
  {  104, 0x00000101, 12},  {  105, 0x000000f4, 12},
  {  106, 0x000000e4, 12},  {  107, 0x000000d9, 12},
  {  108, 0x00000181, 13},  {  109, 0x0000016e, 13},
  {  110, 0x000002cb, 14},  {  111, 0x0000000a, 10},
  {  112, 0x00000062, 10},  {  113, 0x00000030,  9},
  {  114, 0x0000005b, 10},  {  115, 0x00000058, 10},
  {  116, 0x000000a5, 11},  {  117, 0x0000009d, 11},
  {  118, 0x00000094, 11},  {  119, 0x00000105, 12},
  {  120, 0x000000f8, 12},  {  121, 0x00000197, 13},
  {  122, 0x0000018d, 13},  {  123, 0x00000174, 13},
  {  124, 0x0000017c, 13},  {  125, 0x00000379, 15},
  {  126, 0x00000374, 15},  {  127, 0x00000008, 10},
  {  128, 0x00000055, 10},  {  129, 0x00000054, 10},
  {  130, 0x00000051, 10},  {  131, 0x0000009f, 11},
  {  132, 0x0000009c, 11},  {  133, 0x0000008f, 11},
  {  134, 0x00000104, 12},  {  135, 0x000000f9, 12},
  {  136, 0x000001ab, 13},  {  137, 0x00000191, 13},
  {  138, 0x00000188, 13},  {  139, 0x0000017f, 13},
  {  140, 0x000002d7, 14},  {  141, 0x000002c9, 14},
  {  142, 0x000002c4, 14},  {  143, 0x00000007, 10},
  {  144, 0x0000009a, 11},  {  145, 0x0000004c, 10},
  {  146, 0x00000049, 10},  {  147, 0x0000008d, 11},
  {  148, 0x00000083, 11},  {  149, 0x00000100, 12},
  {  150, 0x000000f5, 12},  {  151, 0x000001aa, 13},
  {  152, 0x00000196, 13},  {  153, 0x0000018a, 13},
  {  154, 0x00000180, 13},  {  155, 0x000002df, 14},
  {  156, 0x00000167, 13},  {  157, 0x000002c6, 14},
  {  158, 0x00000160, 13},  {  159, 0x0000000b, 11},
  {  160, 0x0000008b, 11},  {  161, 0x00000081, 11},
  {  162, 0x00000043, 10},  {  163, 0x0000007d, 11},
  {  164, 0x000000f7, 12},  {  165, 0x000000e9, 12},
  {  166, 0x000000e5, 12},  {  167, 0x000000db, 12},
  {  168, 0x00000189, 13},  {  169, 0x000002e7, 14},
  {  170, 0x000002e1, 14},  {  171, 0x000002d0, 14},
  {  172, 0x00000375, 15},  {  173, 0x00000372, 15},
  {  174, 0x000001b7, 14},  {  175, 0x00000004, 10},
  {  176, 0x000000f3, 12},  {  177, 0x00000078, 11},
  {  178, 0x00000076, 11},  {  179, 0x00000073, 11},
  {  180, 0x000000e3, 12},  {  181, 0x000000df, 12},
  {  182, 0x0000018c, 13},  {  183, 0x000002ea, 14},
  {  184, 0x000002e6, 14},  {  185, 0x000002e0, 14},
  {  186, 0x000002d1, 14},  {  187, 0x000002c8, 14},
  {  188, 0x000002c2, 14},  {  189, 0x000000df, 13},
  {  190, 0x000001b4, 14},  {  191, 0x00000006, 11},
  {  192, 0x000000ca, 12},  {  193, 0x000000e0, 12},
  {  194, 0x000000de, 12},  {  195, 0x000000da, 12},
  {  196, 0x000000d8, 12},  {  197, 0x00000185, 13},
  {  198, 0x00000182, 13},  {  199, 0x0000017d, 13},
  {  200, 0x0000016c, 13},  {  201, 0x00000378, 15},
  {  202, 0x000001bb, 14},  {  203, 0x000002c3, 14},
  {  204, 0x000001b8, 14},  {  205, 0x000001b5, 14},
  {  206, 0x000006c0, 16},  {  207, 0x00000004, 11},
  {  208, 0x000002eb, 14},  {  209, 0x000000d3, 12},
  {  210, 0x000000d2, 12},  {  211, 0x000000d0, 12},
  {  212, 0x00000172, 13},  {  213, 0x0000017b, 13},
  {  214, 0x000002de, 14},  {  215, 0x000002d3, 14},
  {  216, 0x000002ca, 14},  {  217, 0x000006c7, 16},
  {  218, 0x00000373, 15},  {  219, 0x0000036d, 15},
  {  220, 0x0000036c, 15},  {  221, 0x00000d83, 17},
  {  222, 0x00000361, 15},  {  223, 0x00000002, 11},
  {  224, 0x00000179, 13},  {  225, 0x00000171, 13},
  {  226, 0x00000066, 11},  {  227, 0x000000bb, 12},
  {  228, 0x000002d6, 14},  {  229, 0x000002d2, 14},
  {  230, 0x00000166, 13},  {  231, 0x000002c7, 14},
  {  232, 0x000002c5, 14},  {  233, 0x00000362, 15},
  {  234, 0x000006c6, 16},  {  235, 0x00000367, 15},
  {  236, 0x00000d82, 17},  {  237, 0x00000366, 15},
  {  238, 0x000001b2, 14},  {  239, 0x00000000, 11},
  {  240, 0x0000000c,  9},  {  241, 0x0000000a,  8},
  {  242, 0x00000007,  8},  {  243, 0x0000000b,  9},
  {  244, 0x0000000a,  9},  {  245, 0x00000011, 10},
  {  246, 0x0000000b, 10},  {  247, 0x00000009, 10},
  {  248, 0x0000000d, 11},  {  249, 0x0000000c, 11},
  {  250, 0x0000000a, 11},  {  251, 0x00000007, 11},
  {  252, 0x00000005, 11},  {  253, 0x00000003, 11},
  {  254, 0x00000001, 11},  {  255, 0x00000003,  8},

};

/* bit_max = 12 */
/* shift = 4, size = 256 */
static IppsVLCTable_32s huf_tab24[] = {
  {    0, 0x0000000f,  4},  {    1, 0x0000000d,  4},
  {    2, 0x0000002e,  6},  {    3, 0x00000050,  7},
  {    4, 0x00000092,  8},  {    5, 0x00000106,  9},
  {    6, 0x000000f8,  9},  {    7, 0x000001b2, 10},
  {    8, 0x000001aa, 10},  {    9, 0x0000029d, 11},
  {   10, 0x0000028d, 11},  {   11, 0x00000289, 11},
  {   12, 0x0000026d, 11},  {   13, 0x00000205, 11},
  {   14, 0x00000408, 12},  {   15, 0x00000058,  9},
  {   16, 0x0000000e,  4},  {   17, 0x0000000c,  4},
  {   18, 0x00000015,  5},  {   19, 0x00000026,  6},
  {   20, 0x00000047,  7},  {   21, 0x00000082,  8},
  {   22, 0x0000007a,  8},  {   23, 0x000000d8,  9},
  {   24, 0x000000d1,  9},  {   25, 0x000000c6,  9},
  {   26, 0x00000147, 10},  {   27, 0x00000159, 10},
  {   28, 0x0000013f, 10},  {   29, 0x00000129, 10},
  {   30, 0x00000117, 10},  {   31, 0x0000002a,  8},
  {   32, 0x0000002f,  6},  {   33, 0x00000016,  5},
  {   34, 0x00000029,  6},  {   35, 0x0000004a,  7},
  {   36, 0x00000044,  7},  {   37, 0x00000080,  8},
  {   38, 0x00000078,  8},  {   39, 0x000000dd,  9},
  {   40, 0x000000cf,  9},  {   41, 0x000000c2,  9},
  {   42, 0x000000b6,  9},  {   43, 0x00000154, 10},
  {   44, 0x0000013b, 10},  {   45, 0x00000127, 10},
  {   46, 0x0000021d, 11},  {   47, 0x00000012,  7},
  {   48, 0x00000051,  7},  {   49, 0x00000027,  6},
  {   50, 0x0000004b,  7},  {   51, 0x00000046,  7},
  {   52, 0x00000086,  8},  {   53, 0x0000007d,  8},
  {   54, 0x00000074,  8},  {   55, 0x000000dc,  9},
  {   56, 0x000000cc,  9},  {   57, 0x000000be,  9},
  {   58, 0x000000b2,  9},  {   59, 0x00000145, 10},
  {   60, 0x00000137, 10},  {   61, 0x00000125, 10},
  {   62, 0x0000010f, 10},  {   63, 0x00000010,  7},
  {   64, 0x00000093,  8},  {   65, 0x00000048,  7},
  {   66, 0x00000045,  7},  {   67, 0x00000087,  8},
  {   68, 0x0000007f,  8},  {   69, 0x00000076,  8},
  {   70, 0x00000070,  8},  {   71, 0x000000d2,  9},
  {   72, 0x000000c8,  9},  {   73, 0x000000bc,  9},
  {   74, 0x00000160, 10},  {   75, 0x00000143, 10},
  {   76, 0x00000132, 10},  {   77, 0x0000011d, 10},
  {   78, 0x0000021c, 11},  {   79, 0x0000000e,  7},
  {   80, 0x00000107,  9},  {   81, 0x00000042,  7},
  {   82, 0x00000081,  8},  {   83, 0x0000007e,  8},
  {   84, 0x00000077,  8},  {   85, 0x00000072,  8},
  {   86, 0x000000d6,  9},  {   87, 0x000000ca,  9},
  {   88, 0x000000c0,  9},  {   89, 0x000000b4,  9},
  {   90, 0x00000155, 10},  {   91, 0x0000013d, 10},
  {   92, 0x0000012d, 10},  {   93, 0x00000119, 10},
  {   94, 0x00000106, 10},  {   95, 0x0000000c,  7},
  {   96, 0x000000f9,  9},  {   97, 0x0000007b,  8},
  {   98, 0x00000079,  8},  {   99, 0x00000075,  8},
  {  100, 0x00000071,  8},  {  101, 0x000000d7,  9},
  {  102, 0x000000ce,  9},  {  103, 0x000000c3,  9},
  {  104, 0x000000b9,  9},  {  105, 0x0000015b, 10},
  {  106, 0x0000014a, 10},  {  107, 0x00000134, 10},
  {  108, 0x00000123, 10},  {  109, 0x00000110, 10},
  {  110, 0x00000208, 11},  {  111, 0x0000000a,  7},
  {  112, 0x000001b3, 10},  {  113, 0x00000073,  8},
  {  114, 0x0000006f,  8},  {  115, 0x0000006d,  8},
  {  116, 0x000000d3,  9},  {  117, 0x000000cb,  9},
  {  118, 0x000000c4,  9},  {  119, 0x000000bb,  9},
  {  120, 0x00000161, 10},  {  121, 0x0000014c, 10},
  {  122, 0x00000139, 10},  {  123, 0x0000012a, 10},
  {  124, 0x0000011b, 10},  {  125, 0x00000213, 11},
  {  126, 0x0000017d, 11},  {  127, 0x00000011,  8},
  {  128, 0x000001ab, 10},  {  129, 0x000000d4,  9},
  {  130, 0x000000d0,  9},  {  131, 0x000000cd,  9},
  {  132, 0x000000c9,  9},  {  133, 0x000000c1,  9},
  {  134, 0x000000ba,  9},  {  135, 0x000000b1,  9},
  {  136, 0x000000a9,  9},  {  137, 0x00000140, 10},
  {  138, 0x0000012f, 10},  {  139, 0x0000011e, 10},
  {  140, 0x0000010c, 10},  {  141, 0x00000202, 11},
  {  142, 0x00000179, 11},  {  143, 0x00000010,  8},
  {  144, 0x0000014f, 10},  {  145, 0x000000c7,  9},
  {  146, 0x000000c5,  9},  {  147, 0x000000bf,  9},
  {  148, 0x000000bd,  9},  {  149, 0x000000b5,  9},
  {  150, 0x000000ae,  9},  {  151, 0x0000014d, 10},
  {  152, 0x00000141, 10},  {  153, 0x00000131, 10},
  {  154, 0x00000121, 10},  {  155, 0x00000113, 10},
  {  156, 0x00000209, 11},  {  157, 0x0000017b, 11},
  {  158, 0x00000173, 11},  {  159, 0x0000000b,  8},
  {  160, 0x0000029c, 11},  {  161, 0x000000b8,  9},
  {  162, 0x000000b7,  9},  {  163, 0x000000b3,  9},
  {  164, 0x000000af,  9},  {  165, 0x00000158, 10},
  {  166, 0x0000014b, 10},  {  167, 0x0000013a, 10},
  {  168, 0x00000130, 10},  {  169, 0x00000122, 10},
  {  170, 0x00000115, 10},  {  171, 0x00000212, 11},
  {  172, 0x0000017f, 11},  {  173, 0x00000175, 11},
  {  174, 0x0000016e, 11},  {  175, 0x0000000a,  8},
  {  176, 0x0000028c, 11},  {  177, 0x0000015a, 10},
  {  178, 0x000000ab,  9},  {  179, 0x000000a8,  9},
  {  180, 0x000000a4,  9},  {  181, 0x0000013e, 10},
  {  182, 0x00000135, 10},  {  183, 0x0000012b, 10},
  {  184, 0x0000011f, 10},  {  185, 0x00000114, 10},
  {  186, 0x00000107, 10},  {  187, 0x00000201, 11},
  {  188, 0x00000177, 11},  {  189, 0x00000170, 11},
  {  190, 0x0000016a, 11},  {  191, 0x00000006,  8},
  {  192, 0x00000288, 11},  {  193, 0x00000142, 10},
  {  194, 0x0000013c, 10},  {  195, 0x00000138, 10},
  {  196, 0x00000133, 10},  {  197, 0x0000012e, 10},
  {  198, 0x00000124, 10},  {  199, 0x0000011c, 10},
  {  200, 0x0000010d, 10},  {  201, 0x00000105, 10},
  {  202, 0x00000200, 11},  {  203, 0x00000178, 11},
  {  204, 0x00000172, 11},  {  205, 0x0000016c, 11},
  {  206, 0x00000167, 11},  {  207, 0x00000004,  8},
  {  208, 0x0000026c, 11},  {  209, 0x0000012c, 10},
  {  210, 0x00000128, 10},  {  211, 0x00000126, 10},
  {  212, 0x00000120, 10},  {  213, 0x0000011a, 10},
  {  214, 0x00000111, 10},  {  215, 0x0000010a, 10},
  {  216, 0x00000203, 11},  {  217, 0x0000017c, 11},
  {  218, 0x00000176, 11},  {  219, 0x00000171, 11},
  {  220, 0x0000016d, 11},  {  221, 0x00000169, 11},
  {  222, 0x00000165, 11},  {  223, 0x00000002,  8},
  {  224, 0x00000409, 12},  {  225, 0x00000118, 10},
  {  226, 0x00000116, 10},  {  227, 0x00000112, 10},
  {  228, 0x0000010b, 10},  {  229, 0x00000108, 10},
  {  230, 0x00000103, 10},  {  231, 0x0000017e, 11},
  {  232, 0x0000017a, 11},  {  233, 0x00000174, 11},
  {  234, 0x0000016f, 11},  {  235, 0x0000016b, 11},
  {  236, 0x00000168, 11},  {  237, 0x00000166, 11},
  {  238, 0x00000164, 11},  {  239, 0x00000000,  8},
  {  240, 0x0000002b,  8},  {  241, 0x00000014,  7},
  {  242, 0x00000013,  7},  {  243, 0x00000011,  7},
  {  244, 0x0000000f,  7},  {  245, 0x0000000d,  7},
  {  246, 0x0000000b,  7},  {  247, 0x00000009,  7},
  {  248, 0x00000007,  7},  {  249, 0x00000006,  7},
  {  250, 0x00000004,  7},  {  251, 0x00000007,  8},
  {  252, 0x00000005,  8},  {  253, 0x00000003,  8},
  {  254, 0x00000001,  8},  {  255, 0x00000003,  4},

};

static IppsVLCTable_32s huf_tab32[] = {
  {    0, 0x00000001,  1},  {    1, 0x00000005,  4},
  {    2, 0x00000004,  4},  {    3, 0x00000005,  5},
  {    4, 0x00000006,  4},  {    5, 0x00000005,  6},
  {    6, 0x00000004,  5},  {    7, 0x00000004,  6},
  {    8, 0x00000007,  4},  {    9, 0x00000003,  5},
  {   10, 0x00000006,  5},  {   11, 0x00000000,  6},
  {   12, 0x00000007,  5},  {   13, 0x00000002,  6},
  {   14, 0x00000003,  6},  {   15, 0x00000001,  6},

};

static IppsVLCTable_32s huf_tab33[] = {
  {    0, 0x0000000f,  4},  {    1, 0x0000000e,  4},
  {    2, 0x0000000d,  4},  {    3, 0x0000000c,  4},
  {    4, 0x0000000b,  4},  {    5, 0x0000000a,  4},
  {    6, 0x00000009,  4},  {    7, 0x00000008,  4},
  {    8, 0x00000007,  4},  {    9, 0x00000006,  4},
  {   10, 0x00000005,  4},  {   11, 0x00000004,  4},
  {   12, 0x00000003,  4},  {   13, 0x00000002,  4},
  {   14, 0x00000001,  4},  {   15, 0x00000000,  4},

};

Ipp32s *mp3idec_VLCSubTablesSizes[] = {
                       0,  mp3VLCSubTablesSizes1,
   mp3VLCSubTablesSizes2,  mp3VLCSubTablesSizes3,
                       0,  mp3VLCSubTablesSizes5,
   mp3VLCSubTablesSizes6,  mp3VLCSubTablesSizes7,
   mp3VLCSubTablesSizes8,  mp3VLCSubTablesSizes9,
  mp3VLCSubTablesSizes10, mp3VLCSubTablesSizes11,
  mp3VLCSubTablesSizes12, mp3VLCSubTablesSizes13,
                       0, mp3VLCSubTablesSizes15,
  mp3VLCSubTablesSizes16,                      0,
                       0,                      0,
                       0,                      0,
                       0,                      0,
  mp3VLCSubTablesSizes24,                      0,
                       0,                      0,
                       0,                      0,
                       0,                      0,
  mp3VLCSubTablesSizes32, mp3VLCSubTablesSizes33
};

IppsVLCTable_32s* mp3idec_VLCBooks[] = {
          0,  huf_tab1,  huf_tab2,  huf_tab3,         0,  huf_tab5,
   huf_tab6,  huf_tab7,  huf_tab8,  huf_tab9, huf_tab10, huf_tab11,
  huf_tab12, huf_tab13,         0, huf_tab15, huf_tab16, huf_tab16,
  huf_tab16, huf_tab16, huf_tab16, huf_tab16, huf_tab16, huf_tab16,
  huf_tab24, huf_tab24, huf_tab24, huf_tab24, huf_tab24, huf_tab24,
  huf_tab24, huf_tab24, huf_tab32, huf_tab33
};

#endif //UMC_ENABLE_MP3_INT_AUDIO_DECODER
